package model.bo;


import java.io.Serializable;
import java.util.List;

import model.bean.Empresa;
import model.persistencia.dao.EmpresaDAO;
import model.persistencia.dao.HibernateUtil;

public class EmpresaBO implements Serializable{
	
	private EmpresaDAO empresaDAO = new EmpresaDAO(Empresa.class);

	public Empresa incluir(Empresa empresa) throws Exception{ 
		HibernateUtil.getInstance().startTransaction();
		try {
			empresa = empresaDAO.save(empresa);
			HibernateUtil.getInstance().commitTransaction();
		} catch (Exception e) {
			HibernateUtil.getInstance().rollbackTransaction();
		}
		return empresa;
	}
	
	public Empresa alterar(Empresa empresa) throws Exception{	 
		HibernateUtil.getInstance().startTransaction();
		try {
			empresa = empresaDAO.merge(empresa);
			HibernateUtil.getInstance().commitTransaction();
		} catch (Exception e) {
			HibernateUtil.getInstance().rollbackTransaction();
		}
		
		return empresa;
	}
	
	public void excluir(Empresa empresa) throws Exception{
		HibernateUtil.getInstance().startTransaction();
		try {
			empresaDAO.delete(empresa);
			HibernateUtil.getInstance().commitTransaction();
		} catch (Exception e) {
			HibernateUtil.getInstance().rollbackTransaction();
		}
	}

	public Empresa consultar(Empresa empresa) throws Exception{
		try {
			empresa = empresaDAO.load(empresa.getId());
		} catch (Exception e) {
			HibernateUtil.getInstance().rollbackTransaction();
		}
		return empresa;
	}
	
	public List<Empresa> listar(Object empresa) throws Exception{
		
		List<Empresa> empresas = null;
		
		HibernateUtil.getInstance().startTransaction();
		try {
			empresas = empresaDAO.listar(empresa);
			HibernateUtil.getInstance().commitTransaction();
		} catch (Exception e) {
			e.printStackTrace();
			HibernateUtil.getInstance().rollbackTransaction();
		}
		
		return empresas;
		
	}
	
	public Empresa validar(Empresa empresa) throws Exception{
		empresa.setSituacao(true);
		return this.alterar(empresa);
	}
	
	public Empresa bloquear(Empresa empresa) throws Exception{ 
		empresa.setSituacao(false);
		return this.alterar(empresa);
	}

}
